export default class TimeUtil {
	/**
	 * 将时间戳转换为指定格式的日期字符串
	 * 
	 * @param {number} timestamp - 时间戳（以毫秒为单位）
	 * @param {string} format - 日期格式（例如："yyyy-MM-dd HH:mm:ss" 或 "MM/dd/yyyy"）
	 * @returns {string} - 格式化后的日期字符串
	 */
	static formatTimestamp(timestamp : number, format : string) : string {
		// 创建一个 Date 对象
		const date = new Date(timestamp);

		// 替换格式字符串中的各个部分
		const formatOptions : Record<string, string> = {
			'yyyy': date.getFullYear().toString(),
			'MM': (date.getMonth() + 1).toString().padStart(2, '0'),
			'dd': date.getDate().toString().padStart(2, '0'),
			'HH': date.getHours().toString().padStart(2, '0'),
			'mm': date.getMinutes().toString().padStart(2, '0'),
			'ss': date.getSeconds().toString().padStart(2, '0'),
		};

		// 使用正则表达式替换格式字符串中的占位符
		let formattedDate = format;
		for (const [key, value] of Object.entries(formatOptions)) {
			const regex = new RegExp(`\\b${key}\\b`, 'g');
			formattedDate = formattedDate.replace(regex, value);
		}
		return formattedDate;
	}

	/**
	 * 将日期转成年龄
	 * 
	 * @param {Date} birthDate - 时间对象
	 */
	static calculateAge(birthDate : Date) : number {
		const currentDate = new Date();
		let age = currentDate.getFullYear() - birthDate.getFullYear();

		// 如果当前日期还没到生日，年龄需要减一
		const monthDifference = currentDate.getMonth() - birthDate.getMonth();
		if (monthDifference < 0 || (monthDifference === 0 && currentDate.getDate() < birthDate.getDate())) {
			age--;
		}
		return age;
	}


}